package com.zjl.学习.第06章_块步骤_读操作写.C_ItemWriter写;

import com.zjl.学习.第06章_块步骤_读操作写.User;
import org.springframework.batch.item.json.GsonJsonObjectMarshaller;
import org.springframework.batch.item.json.JacksonJsonObjectMarshaller;
import org.springframework.batch.item.json.JsonFileItemWriter;
import org.springframework.batch.item.json.builder.JsonFileItemWriterBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.core.io.PathResource;

/**
 * ClassName: B1_输出Json文件
 * Package: com.zjl.学习.第06章_块步骤_读操作写.C_ItemWriter写
 * Description:
 *
 * @Author 张蛟龙
 * @Create 2024/8/4 11:59
 * @Version 1.0
 */
public class B1_输出Json文件 {

    @Bean//输出成  Json 的方法  明确指定Json格式装配器
    public JacksonJsonObjectMarshaller<User> JacksonToJson(){
        JacksonJsonObjectMarshaller marshaller = new JacksonJsonObjectMarshaller();
        return marshaller;
    }

    @Bean//输出成  Json 的方法  明确指定Json格式装配器  使用 gson 需要进入相关的包
    public GsonJsonObjectMarshaller<User> gsonToJson(){
        GsonJsonObjectMarshaller marshaller = new GsonJsonObjectMarshaller();
        return marshaller;
    }
    @Bean
    public JsonFileItemWriter<User> itemWriterToJson(){
        return new JsonFileItemWriterBuilder<User>()
                .name("jsonUserItemWriter")
                .resource(new PathResource("c:/outUser.json"))
                .jsonObjectMarshaller(JacksonToJson())
                .jsonObjectMarshaller(gsonToJson())
                .build();
    }

}
